Modern servers and data centers are frequently faced with unpredictable workloads. For example, a particular application executed by a server may require a small amount of system resources for the majority of the time and experience relatively infrequent peaks of high resource demand for which more computing power is needed. One approach to hosting such applications has been to dedicate sufficient static hardware resources to each application to meet at least an anticipated peak demand for the application. An obvious drawback to this approach is the fact that most of the time, these dedicated resources will remain underutilized.
Virtualization allows the manager of server hardware the ability to make optimal use of his hardware resources with the flexibility of running multiple operating systems having different resource guarantees on the same hardware. Virtualization typically takes one of two general forms: a) virtual partitioning and b) virtual machines. With virtual partitioning, processing hardware is divided by software into independently autonomous partitions that function as separate, individual server devices. In contrast, virtual machines involve the use of shared hardware to implement multiple software implementations of separate computer devices.
To implement virtualization, both virtual partitioning and virtual machines generally require the use of a hypervisor—a software application that runs on the underlying hardware and manages the virtualization. However, occasions may arise where a user desires to incorporate features available from different hypervisors into the same virtualization solution. For example, a virtual partitioning hypervisor may provide the ability to dynamically allocate physical CPUs, memory, and I/O hardware resources to a virtual partition, but may not offer a sub-CPU granularity feature or the ability to run more than one type of operating system. On the other hand, a virtual machine hypervisor may provide the ability to run different types of operating systems, but not support the dynamic allocation of hardware resources.
Another problem with virtualization is that of resource and power management. As discussed above, some virtual partitioning solutions allow for the dynamic reallocation of hardware resources among the partitions according to the relative workloads of the partitions. Nevertheless, a virtual partition having a minimum amount of allocated hardware resources may still be underutilized. By contrast, virtual machine solutions generally do not allow the dynamic reallocation of hardware resources at all.
Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements.